The present invention is directed to a method and apparatus for switching digital data, and, more particularly, to a scalable digital data switch in which the bandwidth of each port of the switch can be varied.
In order to switch digital data, two types of switches are generally used: a central control switch and a distributed control switch. FIG. 1 shows a block diagram example of a central control switch.
The central control switch 20 shown in FIG. 1 includes a simple four-port data crossbar 10. The simple crossbar 10 shown in FIG. 1 includes four bidirectional data ports P.sub.0 -P.sub.3 but alternatively could include eight unidirectional ports (four input ports and four output ports). The simple crossbar 10 can be configured to switch incoming data to output ports. For example, in FIG. 1, Data A is inputted through port P.sub.2. The simple crossbar 10 can be configured so that Data A is outputted through any of ports P.sub.0 -P.sub.3. The possible combinations increase exponentially as data is inputted to more ports. For example, in FIG. 1, if Data A is inputted through port P.sub.2, and Data B is inputted through port P.sub.3, the simple crossbar 10 can be configured to output Data A to port P.sub.3 and Data B to port P.sub.0, or to output Data A to port P.sub.1 and Data B to port P.sub.2, etc. The simple crossbar internally connects an input port to an output port using wires or "pipes" (not shown)
The simple crossbar 10 also includes inputs for four control signals C.sub.0 -C.sub.3 that determine the configuration of the switch by mapping the input data to the desired output port. The control signals are supplied by a control block 12. The control block 12 has setup inputs S.sub.1 and S.sub.2 which are generated by a setup mechanism (not shown) such as a microprocessor. The setup mechanism looks at the desired data route pattern and generates S.sub.1 and S.sub.2 to configure the simple crossbar 10 accordingly.
The primary advantage of the central control switch 20 is that the throughput or the speed that data moves along the wire or pipe in the simple crossbar 10 is relatively high. Therefore, once a specific data pattern or configuration has been set up by the control block 12, the central control switch 20 is very fast. The disadvantage of the control switch 20 is that setup time is very slow which causes relatively poor latency. Latency is the total elapsed time from when data is inputted to the control switch 20 until it is outputted, and therefore is dependent on both the setup time of the simple crossbar 10 and the throughput. In the central control switch 20, setup time is present whenever the data pattern causes the simple crossbar to be reconfigured. Therefore, if the data pattern is frequently changing, the central control switch 20 provides good throughput, but poor latency.
A central control switch is typically used in the telephone art where each data connection lasts a long time, and therefore the switch's throughput is more critical than the switch's latency. A central control switch is best suited for long streams of data. Once the (relatively long) time penalty has been paid to establish a route through the central control switch, the streams of data flow through without any additional routing decisions.
Examples of the simple data crossbar 10 included in the central control switch 20 include the TQ8015 and TQ8017 switches from Triquint Semiconductor.
FIG. 2 shows a block diagram example of a distributed control switch 25. The distributed control switch 25 consists of a "smart" data crossbar 30. The smart data crossbar 30 shown in FIG. 2, like the simple data crossbar 10, includes four bidirectional data ports P.sub.0 -P.sub.3 which allow input and output of digital data. Alternatively, the smart data crossbar 30 could include eight unidirectional ports (four input ports and four output ports). The smart data crossbar 30 includes intelligence which allows it to configure itself based on the destination of incoming data. Data 36 is typical of the format required of incoming data. Data 36 includes a payload portion 34 and a header portion 32. The header portion 32 provides the smart data crossbar 30 with the destination of the payload portion 34. Each port in the smart data crossbar 30 must have a control section (not shown) associated with it that reads the header portion 32 and routes the payload portion 34 to the appropriate port.
Unlike the central control switch 20 where all switching must be done before data or payload is sent, in the distributed control switch 25 the switching is done dynamically as the data is sent. The advantage of the distributed control switch 25 is that if the data connections are constantly changing, the overall latency is lower than with the central control switch 20 because the switching decision function is distributed throughout the switch, and therefore each localized decision can occur quicker.
A distributed control switch 25, in contrast to a central control switch 20, is ideally suited to meets the needs of a switching network for a multicomputer. A multicomputer (as defined by Gordon Bell in Bell, C. G., Multis: A New Class of Multiprocessor Computers, Science 228, pgs. 462-467 (April, 1985)) requires bursts of relatively short duration, high bandwidth data transfer.
Examples of the distributed control switch 25 or smart crossbar 30 include the ASX-200BX from Fore Systems, Inc., the Vivid ATM Workgroup Switch from Newbridge Networks, Inc., and the Cellplex 7000 switch from 3Com Corp.
A scalable bandwidth data switch is a switch in which the number of pipes or connections per port can vary to increase the bandwidth of a particular port. It is known in the art that a scalable bandwidth data switch can be made by combining multiple smart data crossbars 30 and transferring the data in parallel. FIG. 3 shows a block diagram of a data switch 50 that is an example of the type of switch used in the prior art as a scalable bandwidth data switch.
The data switch 50 is made by combining four smart data crossbars 30 shown in FIG. 2 which results in sixteen bidirectional ports P.sub.0 -P.sub.15. The data switch 50 optionally can include thirty-two unidirectional ports. Internally, each port P.sub.0 -P.sub.15 has a wire or pipe connecting it to every port (not shown). For example, sixteen wires connect port P.sub.0 to each of ports P.sub.0 -P.sub.15 (each port is bidirectional so it must have a pipe leading to itself). Therefore, data switch 50 contains 16.times.16, or 4096 internal wires.
The data switch 50 provides variable bandwidth by combining multiple ports into one port. For example, each port P.sub.0 -P.sub.15 provides a bandwidth of one "pipe" or connection between ports. If four times the bandwidth is required, ports P.sub.0 -P.sub.3 can be logically combined into one scalable port E.sub.0, and ports P.sub.8 -P.sub.11 can be logically combined into one scalable port E.sub.2. The bandwidth between ports E.sub.0 and E.sub.2 would then be four "pipes". Data transferred between ports E.sub.0 and E.sub.2 must be sent in parallel. Therefore, data requiring expanded bandwidth must be multiplexed before being sent to multiple ports simultaneously, and demultiplexed when outputted.
Examples of the prior art data switch 50 shown in FIG. 3 include the GIGAswitch from Digital Equipment Corp. and the AX7008 from IBM Corp.
FIG. 4 provides an example of the known technique of transferring data 55 between ports E.sub.0 and E.sub.2 in the data switch 50. Ports P.sub.0 -P.sub.3 comprise port E.sub.0 and ports P.sub.8 -P.sub.11 comprise port E.sub.2. Ports P.sub.0 -P.sub.3 and P.sub.8 -P.sub.11 are "smart" ports because they are ports within the smart data crossbar 30 shown in FIG. 2 and therefore have a control section associated with them. Pipes 40-43 provide paths between ports E.sub.0 and E.sub.2. All data input to ports P.sub.0 -P.sub.3 must include header information that provides the destination of the data. Data 55 is represented as 16 blocks of data, including 4 blocks of header data H and 12 blocks of payload data P. Before data 55 is input into port E.sub.0 it must be multiplexed so that a portion of data 55 is sent to each pipe 40-43 in parallel. Each block of data is multiplexed by sending the first block to the first pipe 40, the second block to the second pipe 41, etc. This allows header data H to be sent to each pipe 40-43. The data 55 is then transferred in parallel over pipes 40-43 and demultiplexed when it is output from port E.sub.2.
The known method of using the data switch 50 as a scalable data switch is very flexible. It can be configured as, for example, four ports, each port having a bandwidth of four pipes, or sixteen separate ports, each port having a bandwidth of one pipe, etc. However, the data switch 50 is relatively complex and expensive. For example, when configured as 16 separate ports, each port in the data switch 50 requires a separate control system that reads the header of each data and routes the data accordingly. Further, when configured as a four-port switch, data switch 50 must either: a) include a 4:1 multiplexer at each input port and a 1:4 demultiplexer at each output port to disassemble and reconstruct, respectively, the complete header; or b) send the entire header intact across all four pipes of each port, thus reducing the net bandwidth available to pass data.
Further, as the data switch 50 is expanded, the number of wires required expands at an ever increasing rate. For example, the four-port smart crossbar 30 in FIG. 2 requires 4.times.4, or sixteen wires to connect each port. In contrast, the sixteen-port data switch in FIG. 3, which comprises four-port smart crossbars, requires 16.times.16, or 4,096 wires to connect each port. Having more wires and more control systems on a switch increases the complexity and increases the size of the switch, which increases the manufacturing cost of the switch
Based on the foregoing, there is a need for a scalable bandwidth switch that is less complex and therefore less expensive, easier to manufacture and smaller than the prior art scalable bandwidth switches.